package 哈希;
import java.util.*;
/**
 * 计算数组中最长连续序列的长度
 * 时间复杂度O(n)，空间复杂度O(n)，n为数组长度
 */
public class longestConsecutive {
    /**
     * 计算数组中最长连续序列的长度
     * 
     * @param nums 输入数组
     * @return 最长连续序列的长度
     */
    public int longestConsec(int[] nums){
        HashSet<Integer> set = new HashSet<>(); // 用于存储数组中的元素
        for(int num : nums){ // 将数组中的元素加入集合
            set.add(num);
        }
        int maxLen = 0; // 用于记录最长连续序列的长度
        for(int i : set){ // 遍历集合中的元素
            if(!set.contains(i - 1)){ // 如果当前元素的前一个元素不在集合中
                int len = 1; // 初始化当前连续序列的长度
                while(set.contains(++i)){ // 继续查找下一个连续元素
                    len++; // 增加当前连续序列的长度
                }
                maxLen = Math.max(len, maxLen); // 更新最长连续序列的长度
            }
        }
        return maxLen; // 返回最长连续序列的长度
    }

    /**
     * 主函数：处理输入输出
     * 输入格式：一行数字，用逗号分隔，表示输入数组
     * 例如：100,4,200,1,3,2 表示一个输入数组
     * 输出格式：最长连续序列的长度
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] s = sc.nextLine().split(","); // 读取输入并分割
        int[] nums = new int[s.length]; // 创建输入数组
        for(int i = 0; i < s.length; i++){ // 将输入转换为整数数组
            nums[i] = Integer.parseInt(s[i]); // 将字符串转换为整数
        }
        longestConsecutive lc = new longestConsecutive(); // 创建实例
        System.out.println(lc.longestConsec(nums)); // 输出最长连续序列的长度
        sc.close(); // 关闭输入流
    }
}
